1. Field of the Invention
The present invention generally relates to network computing. More particularly, the present invention provides a method, system, and computer program product for supporting a large number of intermittently used application clusters.
2. Related Art
FIG. 1 depicts an illustrative prior art system 10 in which a router and load balancer 12 is used to route application requests 14 from a plurality of clients 16 (e.g., web clients such as a web browser) to application clusters 24 (e.g., servers running web applications) running on a host farm 18, based on a list 19 of active application clusters 24 and their locations in the host farm 18. The host farm 18 includes several host machines 20, and each host machine 20 typically runs a plurality of server processes 22. Each server process 22 serves one particular application cluster 24 (e.g., application cluster “a,” “b,” or “c”), and that application cluster 24 may have several server processes 22 dedicated to it. A server process 22 is a “member” of the application cluster 24 it serves. In FIG. 1, there are three application clusters 24. Each server process 22 is labeled (i.e., as “a,” “b,” or “c”) to indicate the application cluster 24 supported by that server process 22. An application placement system 28 determines the number of server processes 22 for each application cluster 24 and where to place each of those server processes 22 in the host farm 18. Application placement may be performed manually (e.g., by an operator, administrator, etc.) or automatically. The operation of system 10 is assumed to be within the purview of one skilled in the art. Accordingly, a detailed discussion of the operation of system 10 will not be provided herein.
System 10 does not scale efficiently for large numbers of application clusters 24, especially when the application clusters 24 are not all concurrently in use at any given time. For example, consider the case where system 10 supports hundreds or thousands of application clusters 24 instead of only three. Since each host machine 20 can run only a limited number of server processes 22 due to the physical limitations of the host machine 20, a large number of host machines 20 would be required to provide all of the server processes 22 needed to support a large number of application clusters 24. Further, a significant fraction of the application clusters 24 may be unused at any given time, resulting in low resource utilization.
Accordingly, a need exists for automatically starting and terminating server processes for application clusters in response to time-varying offered load or other events.